package h0710;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.function.IntPredicate;

/**
  * @description 查看第k个排列
  * @author 不知名帅哥
  * @date 2024/7/10 19:47
  * @version 1.0
*/
public class KthArrangement {
    static int[] fact;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();

        fact=new int[n+1];
        fact[1]=1;
        //计算阶乘
        for (int i=2;i<=n;i++){
            fact[i]=fact[i-1]*i;
        }
        int[] arr=new int[n];
        for (int i = 0; i < n; i++) {
            arr[i]=i+1;
        }
//        String result = getPermutation(n, k);
        String res=getResult(n,k,arr);
        System.out.println(res);
    }

    private static String getResult(int n, int k,int[] arr) {
        if (n==1)return"1";

        int f=fact[n-1];
        int prefix=arr[(k-1)/f];  //这里使用下标
        //重要的是k的变化
        k%=f;
        k=k==0?f:k;

        //去除arr中的prefix
        arr= Arrays.stream(arr).filter(value -> value!=prefix).toArray();
        if (k==1){
            StringBuilder sb=new StringBuilder();
            for (int v : arr) {
                sb.append(v);
            }
            return prefix+sb.toString();
        }else {
            return prefix+getResult(n-1,k,arr);
        }
    }

    public static String getPermutation(int n, int k) {
        // 创建一个包含数字1到n的列表
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            numbers.add(i);
        }

        // 将 k 转换为 0 基准
        k--;

        // 计算阶乘值
        int[] factorial = new int[n];
        factorial[0] = 1;
        for (int i = 1; i < n; i++) {
            factorial[i] = factorial[i - 1] * i;
        }

        StringBuilder result = new StringBuilder();

        // 构建第 k 个排列
        for (int i = n; i > 0; i--) {
            int index = k / factorial[i - 1];
            result.append(numbers.get(index));
            numbers.remove(index);
            k -= index * factorial[i - 1];
        }

        return result.toString();
    }
}
